package com.example.c_vertx

import com.example.starter.work1.MainVerticle
import io.vertx.core.AbstractVerticle
import io.vertx.core.Promise
import io.vertx.core.Vertx
import io.vertx.core.http.HttpMethod
import io.vertx.ext.web.Router

/**
@author whd
@date 2023/11/06 14:22:27
 */
class HelloWord : AbstractVerticle() {
  override fun start(startPromise: Promise<Void>?) {
    val server = vertx.createHttpServer()
    //server.requestHandler { res -> }.listen(8080);
    /*而Router在这里就是可以作为这个参数传入，
 其包含了多个Route，Router主要作用就是用于初始化请求上下文+分发请求到Route，
 类似于springmvc中的dispatchServlet——将请求路径对应的handler找出来处理请求。*/
    val router = Router.router(vertx)
   // router.route().handler { }
  //  server.requestHandler(router).listen(8080)

    val route = router.route("/some/path/").method(HttpMethod.GET)

    route.handler { context ->
      run {
        context.response()
      }.setChunked(true).write("rote1\n")
      context.vertx().setTimer(3000) { context.next() }
    }
    route.handler { context->
      val response = context.response()
      response.write("route2\n")
      context.end()
    }
  }
  companion object {
    @JvmStatic
    fun main(args: Array<String>) {
      var vertx = Vertx.vertx()
      vertx.deployVerticle(MainVerticle())
    }
  }

}
